﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;

namespace CruzSur.Models
{

    public class EncomiendaModel
    {
        public int ID { get; set; }
        public string Codigo { get; set; }
        public string Origen { get; set; }
        public string Destino { get; set; }
        public List<EncomiendaDetalleModel> Detalle { get; set; }
        public bool ValidarEnviado { get; set; }
        public bool ValidarRecibido { get; set; }
        public bool EstadoEnviado { get; set; }
        public bool EstadoRecibido { get; set; }

        public EncomiendaModel()
        {
            Detalle = new List<EncomiendaDetalleModel>();
        }

        public void SetDetalleEnviado(string DetalleID, bool Value)
        {
            foreach (EncomiendaDetalleModel item in Detalle)
            {
                int pid = item.ID;
                if (pid.ToString() == DetalleID)
                {
                    item.EstadoEnviado = Value;
                }
            }
        }

        public void SetDetalleRecibido(string DetalleID, bool Value)
        {
            foreach (EncomiendaDetalleModel item in Detalle)
            {
                int pid = item.ID;
                if (pid.ToString() == DetalleID)
                {
                    item.EstadoRecibido = Value;
                }
            }
        }

        public bool ValidarDetalleEnviado()
        {
            foreach (EncomiendaDetalleModel item in Detalle)
            {
                
                if (item.EstadoEnviado == false)
                {
                    if (item.Observaciones.Find(t => t.Tipo == "1") == null)
                    {
                        return false;
                    }
                }
            }

            return true;
        }

        public bool ValidarDetalleRecibido()
        {
            foreach (EncomiendaDetalleModel item in Detalle)
            {

                if (item.EstadoRecibido == false)
                {
                    if (item.Observaciones.Find(t => t.Tipo == "2") == null)
                    {
                        return false;
                    }
                }
            }

            return true;
        }

    }

    public class EncomiendaDetalleModel
    {
        public int ID { get; set; }
        public string Codigo { get; set; }
        public string Remitente { get; set; }
        public string Destinatario { get; set; }
        public bool EstadoEnviado { get; set; }
        public bool EstadoRecibido { get; set; }
        public List<EncomiendaObservacionModel> Observaciones { get; set; }

        public EncomiendaDetalleModel()
        {
            Observaciones = new List<EncomiendaObservacionModel>();
        }

    }

    public class EncomiendaObservacionModel
    {
        public int ID { get; set; }
        public string Tipo { get; set; }
        public string TipoDesc { get; set; }
        public string Descripcion { get; set; }
    }

}
